﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using Ev_ExcelStandard;

namespace Ev_ExcelToLocalizableString
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("本程序应用功能：Excel语言包转为IOS语言文件\r\n");
            Console.WriteLine("注意内容：\r\n1、所有语言区域-需要加上表格框。\r\n2、文件路径不得有转义符，最好纯英文路径。\r\n");

            startRead();
        }

        static void startRead() {
            Console.WriteLine("请输入Excel文件路径:");
            var strUrlExcel = readLineMsg().TrimEnd();
            Console.WriteLine("请输入Excel语言包keyID的title值:");
            //Console.WriteLine("keyID");
            var strKeyId = readLineMsg();
            Console.WriteLine("请输入Excel语言包指定语言的title值:");
            //Console.WriteLine("中文全称");
            var strKeyLanguage = readLineMsg();

            Console.WriteLine("请输入iOS语言包文件路径:");
            var strLocalizablePath = readLineMsg().TrimEnd();


            // 获取Excel
            ISheet sheet = EvExcelConvertStrings.readExcel(strUrlExcel);
            if (sheet == null)
            {
                Console.WriteLine("Excel 文件读取失败，请重试");
                return;
            }
            // 获取Sheet KeyValue语言包的数据
            var list = EvExcelConvertStrings.readSheet(sheet, strKeyId, strKeyLanguage);

            // 获取语言包文件
            var strLanguageContent = EvExcelConvertStrings.readLanguageFile(strLocalizablePath);

            // 设置语言包Value值
            var content = EvExcelConvertStrings.setLanguageContent(strLanguageContent, list);

            // 保存语言包文件
            EvExcelConvertStrings.saveLanguageFile(strLocalizablePath, content);
            // 已完成
            Console.WriteLine("转换完成。 谢谢使用！ \r\n按任意键继续使用：Enter Key");
            
            Console.ReadLine();
            // 重复以上步骤
            startRead();
        }

        /// <summary>
        /// 重复的验证值
        /// </summary>
        /// <returns></returns>
        static string readLineMsg()
        {
            var strMsg = Console.ReadLine();
            if (string.IsNullOrWhiteSpace(strMsg))
            {
                Console.WriteLine("请正确输入需求值");
                readLineMsg();
            }
            return strMsg;
        }
    }

}